/**
 * 
 */
package com.hd123.rumba.user.biz.share;

import java.util.List;

import net.sf.hibernate.HibernateException;

import com.hd123.rumba.exception.BusinessException;
import com.hd123.rumba.runtime.OperateContext;

/**
 * 公共角色共享给域的代理类 | 接口
 * <p>
 * 用于将公共角色共享给指定的域的操作使用。
 * 
 * @author guzhidi
 * 
 */
public interface IBRoleShareAgent {

  /**
   * 取得指定的域的角色共享信息。
   * 
   * @param domainUuid
   *          指定的域
   * 
   * @return 角色共享信息。
   * @throws BusinessException
   * @throws HibernateException
   */
  public BRoleShareAssign getShareAssign(String domainUuid) throws BusinessException,
      HibernateException;

  /**
   * 取得指定域的下级域的角色共享信息。
   * 
   * @param domainUuid
   *          指定的域
   * 
   * @return 角色共享信息列表。
   * @throws BusinessException
   * @throws HibernateException
   */
  public List<BRoleShareAssign> getLowerShareAssigns(String domainUuid) throws BusinessException,
      HibernateException;

  /** 用于角色的uuid。 */
  public String getRoleUuid() throws BusinessException;

  public void setRoleUuid(String roleUuid) throws BusinessException;

  /**
   * 执行角色共享指令。
   * 
   * @param cmds
   *          指令列表
   * @param context
   *          操作上下文
   * @param oca
   */
  public void executeCommandsT(List<BRoleShareCommand> cmds, OperateContext context, long oca)
      throws BusinessException, HibernateException;

}
